<?php

namespace Consumer;

use \Exception;

class Controller
{
	public $error;
	public $postData;
	
	public function __construct($data){
		$this->postData = $data;
		//如果方法存在
		if(method_exists($this,$data['method'])){
			//添加日志
			$this->addLog($data['method'],$data);
		}
		require_once __DIR__ . '/../config.php';
	}
	
	/**
     * 返回标准json
     * $param string $msg 消息提示
	 * $param int $code 状态码
	 * $param array $data 追加数据
	 * return string return
     */
	public function returnJson($msg,$code,$data=[]){
		$result['code'] = $code;
		$result['msg'] = $msg;
		if($data){
			$result = array_merge($result,$data);
		}
		return json_encode($result);
	}
	
	
	/**
     * 自定义json输出
	 * $param array $data 自定义json输出
	 * return string return
     */
	public function jsonEncode($data=[]){
		if(empty($data)){
			return false;
		}
		return json_encode($data);
	}
	
	
	/**
     * 添加日子
     * $param string $type 方法名称
	 * $param mixed $content 日志内容
	 * $param string $error 错误目录
	 * @throws Exception
	 * return mixed
     */
	public function addLog($type,$content,$error=''){
		if(empty($content)){
			return false;
		}
		if(is_array($content)){
			//$content = json_encode($content);
			$content = var_export($content,true);
		}
		!empty($type) && $type.='/';
		$baseDir = 'log/';
		$dir = $baseDir.$type;
		if ( !file_exists($dir) ) {
            @mkdir($dir);     
        }
		chmod($dir,0777);
		$dir = $dir.date('Y-m-d').$error.'.txt';
		$result = 'time:'.date('Y-m-d H:i:s')."\n";
		$result.= 'content:'.$content;
		return file_put_contents($dir,$result."\n",8);
	}

	/**
     * curl 模拟get 请求
     * $param $url 请求路径
	 * @throws Exception
	 * return mixed
     */
	public function curlGet($url){
		if(empty($url)){
			throw new Exception('url不能为空');
		}
		//初始化
		$curl = curl_init();
		//设置抓取的url
		curl_setopt($curl, CURLOPT_URL, $url);
		//设置头文件的信息作为数据流输出
		curl_setopt($curl, CURLOPT_HEADER, false);
		//设置获取的信息以文件流的形式返回，而不是直接输出。
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		//执行命令
		$data = curl_exec($curl);
		//关闭URL请求
		curl_close($curl);
		//显示获得的数据
		return $data;
	}
	
	/**
     * curl 模拟post 请求
     * $param string $url 请求路径
	 * $param array $data 请求参数
	 * @throws Exception
	 * return mixed
     */
	public function curlPost($url,$data){
		if(empty($url)){
			throw new Exception('url不能为空');
		}
		if(empty($data)){
			throw new Exception('参数不能为空');
		}
		$curl = curl_init();
		curl_setopt($curl,CURLOPT_URL,$url);
		curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
		curl_setopt($curl,CURLOPT_HEADER,false);
		curl_setopt($curl,CURLOPT_POST,1);
		curl_setopt($curl,CURLOPT_POSTFIELDS,['data'=>json_encode($data)]);
		$output = curl_exec($curl);
		curl_close($curl);
		return $output;
	}
	
}